Ierba 라이브러리를 사용하여 DICOM 파일을 읽습니다. 낮은 수준에서 수정할 수 있도록 픽셀에 대한 액세스가 필요합니다. 문서는 말한다 : "이미지의 픽셀에 액세스하려면 사용자가 데이터 핸들러를 검색 할 수 있습니다"를 예를 들어 거기 :Imebra 라이브러리를 사용하여 DICOM 파일의 이미지 픽셀을 수정하는 방법은 무엇입니까?
imbxUint32 rowSize, channelPixelSize, channelsNumber;
ptr<imebra::handlers::dataHandlerNumericBase> myHandler = presentationImage->getDataHandler(true, &rowSize, &channelPixelSize, &channelsNumber);
// Retrieve the image's size in pixels
imbxUint32 sizeX, sizeY;
presentationImage->getSize(&sizeX, &sizeY);
// Scan all the rows
imbxUint32 index(0);
for(imbxUint32 scanY = 0; scanY < sizeY; ++scanY)
{
// Scan all the columns
for(imbxUint32 scanX = 0; scanX < sizeX; ++scanX)
{
// Scan all the channels
for(imbxUint32 scanChannel = 0; scanChannel < channelsNumber; ++scanChannel)
{
imbxInt32 channelValue = myHandler->getSignedLong(index++);
// Do something with the channel's value
//--------------------------------------
}
}
} 내가 presentationImage 객체의 픽셀이 변경 될 필요가. 나는 그런 식으로 그것을 변경하려고했습니다 :
myHandler->setSignedLong(index,255);
그러나 그것은 presentationImage 객체를 변경하지 않습니다. Imebra 문서에는 세 가지 예제 만 있으며 클래스 및 메소드 설명은 약간 원시입니다. Google은 아무 것도 모른다. 이 개체의 픽셀 값을 변경하는 방법은 무엇입니까?
라이브러리를 모르지만 문서를 빨리 열람하면 'true'를 getDataHandler 함수에 전달해야 함을 나타냅니다. 문서에서 - 응용 프로그램이 버퍼에 쓰기를 원하면 true이고, 그렇지 않으면 false입니다. "그 호출에서'true'를 전달하려 했습니까? – pstrjds
예, 죄송합니다. 나는 그것을했다. 그러나 진실 된 변화는 아무것도 가지지 않고있다. 여기에 잘못된 사본이 있습니다. 지금 바로 수정. – maskotky