플로트 행렬이 1024x1024이고 파일 내부에이 행렬의 부호를 유지하려고합니다. 이를 위해 부호 행렬을 Matrix of boolean
으로 유지하고 싶습니다. 플로트가 4 바이트 인 내 매트릭스 크기는 크기가 4MB 이상인 부울은 1 비트이고, 행렬 크기가 10^20(1M)
때문에디스크에 OpenCV 부울 행렬을 저장하십시오.
2.312, 0.232, -2,132
5.754, -4,34, -3.23
-4.34, -1.23, 7.9453
내 출력
1,1,0
1,0,0
0,0,1
같아야
내 행렬이고, 가정 1M, 나는 bool mat이 일 것이라고 예상하지만 opencv
에 threshold
메서드를 사용하면 출력 파일이 1MB
입니다. 이는 파일이 uchar (8 비트)로 저장됨을 의미합니다.
imwrite를 사용하려고했지만 작동하지 않았습니다.
편집 : 나는 스피드가 내 테스트를위한 또 다른 중요한 요인이라는 것을 깨달았다. 디스크에서 약 1 천만 개의 1K * 1K 행렬을로드 중입니다. 당신이
Mat input;
Mat A = (input >= 0);
을 작성할 수 있습니다 OpenCV의 사전
> = 0은 255 개의 항목을 제공합니다. A = (input> = 0)/255;' – Micka
이 도구를 사용하는 방법에 대해 좀 더 설명해 주시겠습니까?또한 'sign mat'을 8 비트로 변환하면 'imwrite'가 내 데이터를 압축하므로 매우 효율적이지 않습니까? 매트릭스에 가능한 한 작게 유지하고 싶지만 RAM에서는 8 비트로 유지하는 것이 좋습니다. – smttsp
수정 된 답변보기 일반적으로 올바른 압축 매개 변수를 사용하면 8 비트로 충분히 만족할 수 있습니다. – ypnos